<?PHP

接口
    接口是一个特殊的抽像类, 类的模板/类的规范
    接口需要使用interface关键词来定义(与类的定义类似)
    接口里不能定义属性，只能定义公有的抽像方法
    接口里可以定义常量，但不推荐使用
    接口不能实例化对象
    接口可以继承接口
    使用implements操作符继承接口并且必须实现接口定义的抽像方法
    类可以多实现接口

    定义接口:
        interface ichess
        {
            function run($e = array());
        }

        interface iout
        {
            function show();
        }
    使用接口:
        class base {}

        class sdlchess extends base implements ichess, iout
        {
            public function run($e = array())
            {
            }

            public function show()
            {
            }
        }

性状
    使用trait定义性状, 解决代码重用
    DRY原则: 不在要多个地方重复相同代码
    性状将性状代码直接融合到类中，互相直接使用$this来访问数据和方法
    性状成员会覆盖父类的成员，本类的成员会覆盖性状成员

    定义性状：与类的定义一样，除关键词不一样
    trait tchess
    {
        和与类的定义一模一样
    }

    使用性状:
        class kyo
        {
            use tchess;  //导入性状
        }

命名空间    解决重名问题
    顶级厂商名      标识不同的厂商
    子命名空间      标识不同的开发者或模块

    定义命名空间
        必须定义在本文件中开头(PHP标签下第一行)

        namespace 顶级厂商名\子命名空间名;
        或
        namespace 顶级厂商名\子命名空间名 {

            除了 declare 代码可以命名空间括号外，其它代码必须全在命名空间括号里
        }

    导入命名空间
        use 顶级厂商名;
        use 顶级厂商名\子命令空间名;
        use 顶级厂商名\子命令空间名\类名;
        use function 顶级厂商名\子命令空间名\函数名;
        use constant 顶级厂商名\子命令空间名\常量名;
        use function 顶级厂商名\子命令空间名\函数名 as 别名;

反射
    反射直观理解根据最终目标找到源头
    在PHP运行状态中，根据某个对象导出此对象所属类、方法、属性、参数等详细信息，包括注释.
    这些动态获取信息的功能称反射API
        Reflection/ReflectionClass/ReflectionMethod
    PHP本身提供获取类、函数、变量的信息的函数，但功能没反射API强大
    反射主要实现类的文档生成, 实现插件功能等

-------------------------------------------------------------------------------
注释规范
    //  单行注释    单行语句不长可以将注释写在语句后面,
                    如果单行语句太长将单行注释写在语句上一行
                    代码语句使用单行注释
    /* ... */  批量注释, 函数实现注释、文件注释等使用批量注释
    代码注释不宜，但易懂，描述为什么，而不是做什么

    文件注释
        文件注释放在文件开头位置，推荐包括以下信息：
        本程序的描述、作者及邮箱信息、项目名称、文件名称、编写日期
        版本信息、重要的使用说明(类的方法调用及注意事项等)
        例：
            /**
             * 项目名称
             *
             * LICENSE(版权 可选项)
             *
             * ------------------------------------
             * 强调说明
             * ------------------------------------
             *
             * @description  项目简介
             * @copyright    版权信息
             * @author       作者 <作者邮箱>
             * @version      版本信息
             * @modify       每次更新简介 by 修改者
             *
             */

    函数/方法注释(函数上方注释)
        /**
         * 函数简介
         * @param 参数类型 参数名 参数说明
         * ...
         * @access 可见性(针对方法 public/private/protected)
         * @return 返回值
         *
         * @fixme   表示需要修改项
         * @todo    表示要完善地方
         *
         */

    PhpDocumentor工具会扫描PHP项目所有源文件提取分析注释生成项目文档
        http://www.phpdoc.org/   标记参数


vim:ft=php:
